home *** CD-ROM | disk | FTP | other *** search
- var enterCR_pref_value = false;
- var args;
-
- var sendAwayMessage = true;
-
- function KnockKnockAddDenyList()
- {
- val = cmdPeopleBlock();
- if ( val == true )
- window.close();
- }
-
- function toggleKnockKnockPref()
- {
- var element = document.getElementById("IMKnockKnockCheckbox");
-
- if (aimPrefsManager() && element.checked == true ) {
- aimPrefsManager().SetBoolPref("aim.privacy.knockknock", false , null, false);
- }
- else if ( aimPrefsManager() && element ) {
- aimPrefsManager().SetBoolPref("aim.privacy.knockknock", true , null, false);
- }
- }
-
- function pokeKnockKnockMessage( scname )
- {
- var msg = aimString("knock.msg" );
- var warning = aimString("knock.warning" );
- var message = aimString("knock.preamble").replace(/%ScreenName%/, scname);
- var element = document.getElementById("IMKnockKnockHtml");
- var textNode = document.createTextNode(message);
- element.appendChild(textNode);
-
- element = document.getElementById("IMKnockKnockMessage");
- textNode = document.createTextNode(msg);
- element.appendChild(textNode);
-
- element = document.getElementById("IMKnockKnockWarningTitle");
- element.setAttribute("value", scname);
-
- var locateManager = aimLocateManager();
-
- var LocateCallbackObject = new Object();
-
- LocateCallbackObject.OnRequestUserInfoDefaultComplete = function(screenname, userobj)
- {
- var element = document.getElementById("IMKnockKnockWarning");
- var percent = userobj.GetWarningPercent();
- var message = warning.replace(/%Level%/, percent); // XXX
- var textNode = document.createTextNode(message);
- element.appendChild(textNode);
- }
-
- LocateCallbackObject.OnRequestUserInfoDefaultError = function(screenname, error)
- {
- // do nothing
- }
-
- locateManager.RequestUserInfoDefault( LocateCallbackObject, scname );
-
- labels = document.getElementById("okCancelButtons");
- element = document.getElementById("ok");
- element.setAttribute("value", labels.getAttribute("button1Label"));
- element = document.getElementById("cancel");
- element.setAttribute("value", labels.getAttribute("button2Label"));
-
- doSetOKCancel(StartConversation, CancelConversation);
-
- element = document.getElementById("IMKnockKnockCheckbox");
-
- var currentVal = aimPrefsManager().GetBoolPref("aim.privacy.knockknock" ,null,false);
- if ( currentVal == true ) {
- element.setAttribute("checked", false);
- }
- else {
- element.setAttribute("checked", true);
- }
- }
-
- function aimPrivacyObject()
- {
- return aimPrivacy();
- }
-
- function aimWarningsObject()
- {
- return aimWarnings();
- }
-
- function aimSessionObject()
- {
- return aimSession();
- }
-
- function aimLocateObject()
- {
- return aimLocateManager();
- }
-
- function getEnums( myInterface )
- {
- var enums = { };
- for ( var i in myInterface ) {
- if ( typeof myInterface[i] == "number" ) {
- enums[i] = myInterface[i];
- }
- }
- return enums;
- }
-
- // XXX Global to determine if our onload handler has been called yet.
- // For some reason, our onunload handler is getting called before onload
- // on the first time we create IM.xul. This is a workaround.
-
- var gFirstTime = 1;
-
- function AimIMOnWndLoad()
- {
- /**
- * AimIMOnWndLoad -- Onload handler for IM conversation window.
- *
- * @author syd
- * @return void
- */
- gFirstTime = 0;
-
- top.imObject = new Object();
- top.imObject.logHasFocus = false;
- top.imObject.editorHasFocus = false; /* XXX */
- top.imObject.screenNameHasFocus = false;
- /**
- * retrieve window arguments, extract IM mode and screen name
- */
-
- args = aimGetArgs(top.arguments[0]);
- dump("[Mode=" + args.Mode + "]\n");
- dump("[ScreenName=" + args.ScreenName + "]\n");
- top.document.getElementById("IMAttribs").setAttribute("imMode", args.Mode);
-
- var screenName;
- if(args.ScreenName)
- screenName= args.ScreenName;
- else
- screenName = "";
-
- /**
- * if knock knock, let user approve it, also, check to see if we should
- * autoreply, and do so if necessary
- */
-
- var pPAimIM = aimPIMObject();
- if ( args.Mode == "KnockKnock" ) {
- if(pPAimIM) {
- sendAwayMessage = false;
- var curVal = aimPrefsManager().GetBoolPref("aim.away.autoreply", null, false);
- if ( curVal == true )
- pPAimIM.SendAwayMessageMaybe(AimIMGetFormScreenName(), top, true);
- }
- pokeKnockKnockMessage( screenName );
- /**
- * we have to set this focus or ok/cancel buttons will not work
- * with the key equivalents. lame
- */
-
- setTimeout('window.focus()',300);
- return;
- }
- else
- doSetOKCancel(DoNothing, DoNothing);
-
- /**
- * otherwise, do what we have always done
- */
-
- StartConversation();
- }
-
- function DoNothing()
- {
- return false;
- }
-
- function CancelConversation()
- {
- args = aimGetArgs(top.arguments[0]);
- var screenName;
- if(args.ScreenName) {
- screenName= args.ScreenName;
- var session = aimSessionObject();
- if ( session ) {
- session.AddKnockKnockReject(screenName);
- }
- }
- window.close();
- }
-
- function StartConversation()
- {
- doSetOKCancel(DoNothing, DoNothing);
- args = aimGetArgs(top.arguments[0]);
- var screenName;
- var isKnockKnock = false;
- if(args.ScreenName)
- screenName= args.ScreenName;
- else
- screenName = "";
-
- if ( args.Mode == "KnockKnock" ) {
- var session = aimSessionObject();
- if ( session ) {
- session.AddKnockKnockAccept(screenName);
- }
- args.Mode = "Bound";
- isKnockKnock = true;
- if ( AimOnlineAway())
- ComeBack(); // return from away state if we are in it
- }
-
- top.document.getElementById("IMAttribs").setAttribute("imMode", args.Mode);
- top.imObject.logHasFocus = false;
- //top.imObject.editorHasFocus = true; /* XXX */
-
- var editorElement = document.getElementById("ComposeWnd");
- if (!editorElement) {
- dump("No editor element found\n");
- return;
- }
-
- var editorShell = editorElement.editorShell;
- if (!editorShell) {
- dump("No editorShell found\n");
- return;
- }
-
- if(editorShell) {
- // save the editorShell in the window. The editor JS expects to find it there.
- window.editorShell = editorShell;
-
- window.editorShell.editorType = "html";
-
- window.editorShell.contentWindow = window._content;
- window.editorShell.webShellWindow = window;
- window.editorShell.LoadUrl("chrome://aim/content/blank.html");
- EditorSharedStartup();
- }
-
- top.document.getElementById("fldScreenName").value = screenName;
-
- // if we have a screen name, put the focus on the content window
- // otherwise, put the focus in the "To:" field
-
- if(screenName != "") {
- setTimeout('contentWindow.focus()',300);
- top.imObject.editorHasFocus = true;
- }
- else {
- //setTimeout('top.document.getElementById("fldScreenName").focus()', 350);
- setTimeout("DoFocusAdjust()",200);
- }
-
- AimIMSetFormScreenName(screenName);
- // XXX For some reason, we need to refresh the title after the
- // onload handler or it won't change
- setTimeout('AimIMRefreshScreenName()', 10);
-
- var timestampItem = top.document.getElementById("miTimestamp");
-
- var currentVal = aimPrefsManager().GetBoolPref("aim.general.im.timeStamp",null,false );
- if ( currentVal == true )
- timestampItem.setAttribute("value", aimString("miTimestamp.Hide"));
- else
- timestampItem.setAttribute("value", aimString("miTimestamp.Show"));
-
- // since we overlay the edit menu from the editorOverlay.xul file,
- // we have to reset the oncommad to be AIM specific
-
- //var prefMenuItem = top.document.getElementById("menu_preferences");
- //prefMenuItem.setAttribute("oncommand", "goPreferences('App.xul', 'chrome://communicator/content/pref/pref-IM_instantmessage.xul','instantmessenger');");
-
- var pPAimIM = aimPIMObject();
- if(pPAimIM) {
- pPAimIM.OnWindowLoad(screenName, top, sendAwayMessage);
- if ( sendAwayMessage == true ) {
- var curVal = aimPrefsManager().GetBoolPref("aim.away.autoreply", null, false);
- if ( curVal == true )
- pPAimIM.SendAwayMessageMaybe(AimIMGetFormScreenName(), top, false);
- sendAwayMessage = false;
- }
- }
-
- return false;
- }
-
- function DoFocusAdjust()
- {
- var ScrElement=document.getElementById("fldScreenName");
- if (top.imObject.screenNameHasFocus == false)
- setTimeout("DoFocusAdjust()",100);
- if (ScrElement.value == "")
- {
- ScrElement.focus();
- top.imObject.screenNameHasFocus=true;
- return;
- }
-
- }
- function AimIMOnWndUnload()
- {
- dump("AimIMOnWndUnload\n");
-
- // XXX See note at the top of the file
- if(gFirstTime == 1)
- return;
-
- var screenName = AimIMGetFormScreenName();
- var pPAimIM = aimPIMObject();
- if(pPAimIM)
- pPAimIM.OnWindowUnload(screenName, top);
- }
-
- function AimIMCmdSend( strip )
- {
- AimIMSetFormAction(true);
- var screenName = AimIMGetFormScreenName();
- if ( !screenName || screenName == "" ) {
- aimErrorBox(aimString("msg.EmptyScreenName"));
- top.document.getElementById("fldScreenName").focus();
- return false;
- }
-
- /*
- if(false == aimBuddyIsOnline(screenName))
- {
- var errString;
-
- errString = aimString("msg.ScreenNameOffline").replace(/%ScreenName%/, screenName);
- aimErrorBox(errString);
- top.document.getElementById("fldScreenName").focus();
- return false;
- }
- */
-
- if(false == AimIMIsBound() ) {
- // XXX Should be handled when blur works.
- AimIMSetFormScreenName(top.document.getElementById("fldScreenName").value);
- screenName = AimIMGetFormScreenName();
-
- if(aimIMDoesIMExist(screenName)) {
- aimErrorBox(aimString("msg.DuplicateIM"));
- AimIMSetFormAction(false);
- return false;
- }
- }
-
-
-
- if (top.editorShell.documentLength >1024)
- {
- aimErrorBox(aimString("msg.BigIM").replace(/%BigBy%/, ""+(top.editorShell.documentLength-1024)));
- return;
- }
-
- var bodyText = "<html>" + top.editorShell.GetContentsAs("text/html", 8 + 4) + "</html>";
- /* if user hit return, strip out the BR that was added */
-
- if ( strip == true ) {
- bodyText = bodyText.replace(/<br>/gi, "");
- bodyText = bodyText.replace(/\n/g, "");
- bodyText = bodyText.replace(/\r/g, "");
- }
-
- bodyText = bodyText.replace(/\n/g, "");
- bodyText = bodyText.replace(/\r/g, "");
- bodyText = bodyText.replace(/<br><br>/gi, "<br>");
- bodyText = bodyText.replace(/<br><\/body>/i, "<\/body>");
-
- aimPIMSendIM(top, screenName, bodyText);
-
- if ( AimOnlineAway() )
- ComeBack(); // if away, come back
-
- var session = aimSessionObject();
- if ( session )
- session.AddKnockKnockAccept( screenName );
- top.editorShell.SelectAll();
- top.editorShell.DeleteSelection(null);
- //*** return focus to editor after clicking send ***
- top._content.focus();
- return true;
- }
-
- function AimIMIsBound()
- {
- var mode = AimIMGetFormMode();
-
- if("Bound" == mode)
- return true;
- return false;
- }
-
- function AimIMUpdateWarningPercent()
- {
- dump("called AimIMUpdateWarningPercent\n");
- }
-
- //************ Form Accessors ****************
-
- function AimIMGetFormMode()
- {
- return top.document.getElementById("IMAttribs").getAttribute("imMode");
- }
-
- function AimIMGetFormScreenName()
- {
- //var myScreenName = top.document.getElementById("IMAttribs").getAttribute("imScreenName");
- //if (!myScreenName || myScreenName == "") {
- myScreenName = top.document.getElementById("fldScreenName").value;
- //}
-
- return myScreenName;
- }
-
- function AimIMRefreshScreenName()
- {
- AimIMSetFormScreenName(top.document.getElementById('fldScreenName').value);
- }
-
- function AimIMSetFormScreenName(screenName)
- {
- var pPAimIM = aimPIMObject();
- if(pPAimIM)
- pPAimIM.OnWindowScreenNameChange(screenName, top);
-
- //dump("XXX Screen name = " + screenName + "\n");
- var title;
- if("" == screenName || !screenName)
- title = aimString("im.title.Unbound");
- else
- title = aimString("im.title.Bound").replace(/%ScreenName%/, screenName);
-
- top.title = title;
- }
-
- function AimIMSetFormAction(action)
- {
- top.document.getElementById("IMAttribs").setAttribute("imAction", action);
- }
-
- //*********** Window Resizing *****************
-
- function AimIMWindowResize(sWidth,sHeight){
- top.resizeTo(sWidth,sHeight)
- }
-
-
-
- //************ Command Handling ****************
-
- function cmdFileNewIM()
- {
- dump("Implement Menu Command cmdFileNewIM()\n");
- aimIMInvokeIMForm(null, null);
- }
-
-
-
- function cmdEditCut()
- {
- dump("Implement Menu Command cmdEditCut()\n");
- if ( top.imObject.editorHasFocus == true ) {
- dump( "Focus window is edit wnd\n" );
- EditorCut();
- }
- }
-
- function cmdEditCopy()
- {
- dump("Implement Menu Command cmdEditCopy()\n");
- if ( top.imObject.logHasFocus == true ) {
- dump( "Focus window is log wnd\n" );
- }
- else if ( top.imObject.editorHasFocus == true ) {
- dump( "Focus window is edit wnd\n" );
- EditorCopy();
- }
- }
-
- function cmdEditPaste()
- {
- dump("Implement Menu Command cmdEditPaste()\n");
- if ( top.imObject.editorHasFocus == true ) {
- dump( "Focus window is edit wnd\n" );
- EditorPaste();
- }
- }
-
- function cmdEditSelectAll()
- {
- dump("Implement Menu Command cmdEditSelectAll()\n");
- if ( top.imObject.logHasFocus == true ) {
- dump( "Focus window is log wnd\n" );
- }
- else if ( top.imObject.editorHasFocus == true ) {
- dump( "Focus window is edit wnd\n" );
- EditorSelectAll();
- }
- }
-
- function cmdEditPreferences()
- {
- dump("Implement Menu Command cmdEditPreferences()\n");
- }
-
- function cmdViewToolbarsButtons()
- {
- dump("Implement Menu Command cmdViewToolbarsButtons()\n");
- }
-
- function cmdViewToolbarsCompose()
- {
- dump("Implement Menu Command cmdViewToolbarsEditor()\n");
- }
-
- function cmdViewTimestamp()
- {
- var timestampItem = top.document.getElementById("miTimestamp");
-
- var currentVal = aimPrefsManager().GetBoolPref("aim.general.im.timeStamp" , null, false );
- if ( currentVal == true ){
- aimPrefsManager().SetBoolPref("aim.general.im.timeStamp", false , null, false);
- timestampItem.setAttribute("value", aimString("miTimestamp.Show"));
- }
- else {
- aimPrefsManager().SetBoolPref("aim.general.im.timeStamp", true , null, false);
- timestampItem.setAttribute("value", aimString("miTimestamp.Hide"));
- }
- }
-
- function cmdAddressBook()
- {
- var screenName = AimIMGetFormScreenName();
-
- var abCardURI = aimABInfo().GetABURI(screenName);
-
- var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService();
- rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService);
- var card = rdf.GetResource(abCardURI);
- card = card.QueryInterface(Components.interfaces.nsIAbCard);
-
- goEditCardDialog("abdirectory://abook.mab", card, null);
- }
-
- function cmdPeopleSendChatInvitation()
- {
- dump("Implement Menu Command cmdPeopleSendChatInvitation()\n");
- }
-
-
-
- function cmdPeopleBlock()
- {
- var screenName = AimIMGetFormScreenName();
- if ( !screenName ) {
- if(args && args.ScreenName)
- screenName= args.ScreenName;
- if( !screenName )
- return false;
- }
- var pIAimPrivacy = aimPrivacyObject();
- if ( !pIAimPrivacy )
- return false;
-
- pIAimPrivacy.BlockUser( screenName );
- return true;
- }
-
- function cmdAddBuddy()
- {
- openDialog("chrome://aim/content/BuddyAddBuddy.xul", "", "modal=yes,titlebar,chrome", null, null, AimIMGetFormScreenName());
- }
-
- function cmdCmdWarn()
- {
- dump("Implement Menu Command cmdCmdWarn()\n");
- }
-
- /**** routines to track Focus */
-
- function composeWndFocus(boolval)
- {
- dump( "composeWndFocus" + boolval + "\n" );
- if ( top.imObject )
- top.imObject.editorHasFocus = boolval;
- }
-
- function logWndFocus(boolval)
- {
- dump( "logWndFocus" + boolval + "\n" );
- if ( top.imObject )
- top.imObject.logHasFocus = boolval;
- }
-
- function AimIMFldScreenNameFocus(focus)
- {
- if(false == focus)
- AimIMSetFormScreenName(top.document.getElementById("fldScreenName").value);
- }
-
- function SendOnEnter()
- {
- // if enterCR_pref_value is true, the pref was set so that enter was a CR
- // if enterCR_pref_value is false, the user wants enter to send the IM message
- try {
- pref = aimPrefsManager();
- enterCR_pref_value = pref.GetBoolPref("aim.general.im.enterCR", null, false);
- }
- catch (ex) {
- // default to be "send on enter key"
- enterCR_pref_value = true;
- }
-
- return (!enterCR_pref_value);
- }
-
-